Unit
Biblioteca utilitária para facilitar o tratamento de unidades
Classes | Public Member Functions | Static Public Member Functions | Private Types | Private Member Functions | Static Private Member Functions | Private Attributes | Friends | List of all members
Unit Class Reference

Classe responsável por identificar e agrupar tipos de unidades. More...

#include <unit.h>

Collaboration diagram for Unit:
Collaboration graph
[legend]

Classes

struct  UnitWrapper
 Estrutura auxiliar para uso interno por Unit. More...
 

Public Member Functions

 Unit ()
 Construtor default.
 
 Unit (QString unitName, bool normalize=false)
 Constroi um Unit a partir do nome do tipo de dado. More...
 
 ~Unit ()
 Destrutor.
 
bool isKnown () const
 Retorna true se a unidade é conhecida e pode ser convertida para outras unidades de mesma grandeza.
 
bool isUnknown () const
 Retorna true se a unidade é desconhecida e não pode ser convertida.
 
int category () const
 Retorna o identificador da categoria ao qual a unidade pertence, ou 0 se a unidade não pertencer a nenhuma categoria. More...
 
QString name () const
 Retorna o nome utilizado para construir a unidade.
 
QString siConv () const
 Retorna uma string padronizada com o fator de conversão e a unidade SI equivalente a esta unidade, ou o valor de name() se a unidade for desconhecida. More...
 
QString siBase () const
 Retorna a grandeza SI associada a esta unidade.
 
bool operator== (const Unit &o) const
 Operador de igualdade.
 
bool operator!= (const Unit &o) const
 Operador de desigualdade.
 
bool equal (const Unit &o) const
 Retorna true se a unidades forem iguais.
 
UnitConverter getConverter (const Unit &destUnit) const
 Retorna um conversor para tranformar valores da unidade atual para a unidade recebida como parâmetro. More...
 
bool canConvertTo (const Unit &destUnit) const
 Retorna true se a unidade atual for conversível para a unidade recebida como parâmetro.
 
double convertTo (double val, const Unit &destUnit, bool *ok=NULL) const
 Converte o valor recebido da unidade atual para a unidade de destino. More...
 
void print () const
 Função auxiliar que imprime o conteúdo de uma unidade. Auxilio a debug e logging.
 

Static Public Member Functions

static UnitConverterconverter (const Unit &srcUnit, const Unit &dstUnit, bool *compatible=NULL)
 Função auxiliar usada para criar um conversor entre srcUnit e dstUnit. More...
 

Private Types

typedef QSharedPointer< UnitWrapperSharedUnitWrapper
 Tipo auxiliar para uso interno. SharedPointer para um UnitWrapper.
 

Private Member Functions

 Unit (SharedUnitWrapper udunit, int category, QString name, QString siconv)
 Construtor privado utilizado por UnitManager para criar unidades. More...
 
ut_unit * udunit () const
 Retorna a representação da unidade para a biblioteca UDUNITS. More...
 
void setCategory (int cat)
 Altera a categoria da unidade. Usada por UnitManager.
 

Static Private Member Functions

static QString extractSiBase (QString unit)
 Extrai a unidade base de uma unidade formatada pela lib UDUNITS, removendo multiplicadores e offsets. Retorna "" se não conseguiu extrair.
 

Private Attributes

SharedUnitWrapper _udunit
 Representação da unidade "carregada". Shared pointer permite a cópia de unidades.
 
int _unitCategory
 Categoria (grupo) da unidade.
 
QString _unitName
 Nome com o qual a unidade foi construída.
 
QString _siConv
 Conversão da unidade para o SI.
 

Friends

class UnitConverter
 
class UnitManager
 

Detailed Description

Classe responsável por identificar e agrupar tipos de unidades.

Unidades são construídas a partir da expressão que representa esta unidade (ex: kg.m/s2, g/cc, darcy, ...). Quando um objeto é construído, utiliza a biblioteca UDUNITS para verificar se a unidade é conhecida.

Se a unidade for conhecida, esta terá uma conversão para unidades SI padronizada e poderá ser usada em conversões. Caso contrário, não poderá ser usada em conversões.

O nome original usado para construir a unidade é retornado por name().

Cada tipo de unidade pode estar associado a uma categoria. A categoria de uma unidade pode ser extraida através da função category(). Categorias podem ser utilizadas para obter, junto ao UnitManager, uma lista de unidades padrão para as quais a unidade atual pode ser convertida.

A função getConverter() retorna um objeto que pode ser utilizado para converter valores para outra unidade.

A função canConvertTo() indica se a unidade atual é conversível para uma outra unidade passada como parâmetro. Utilize a função convertTo() para converter um valor da unidade atual para outra. Se for efetuar a conversão múltiplas vezes, o uso de getConverter() será mais eficiente.

Constructor & Destructor Documentation

◆ Unit() [1/2]

Unit::Unit ( QString  name,
bool  normalize = false 
)

Constroi um Unit a partir do nome do tipo de dado.

Se o nome recebido não corresponder a nenhuma das opções existentes cria uma unidade que não pode ser convertida. Utilize as funções isKnown() ou isUnknown() para descobrir se a unidade passada a este construtor foi reconhecida ou não.

Parameters
nameNome da unidade desejada
normalizeSe true (default), indica que se a unidade for igual a alguma das unidades cadastradas para a categoria, o nome recebido deve ser transformado no nome "normalizado" (padrão) desta unidade. Ex: m*s = s*m = m.s Se "m.s" for uma unidade cadastrada para a categoria de velocidade, transforma "m*s" em "m.s"

◆ Unit() [2/2]

Unit::Unit ( SharedUnitWrapper  udunit,
int  category,
QString  name,
QString  siconv 
)
private

Construtor privado utilizado por UnitManager para criar unidades.

Apenas seta todos os atributos internos da unidade

Member Function Documentation

◆ category()

int Unit::category ( ) const
inline

Retorna o identificador da categoria ao qual a unidade pertence, ou 0 se a unidade não pertencer a nenhuma categoria.

Categorias podem ser utilizadas para obter, junto ao UnitManager, uma lista de unidades padrão para as quais a unidade atual pode ser convertida

◆ converter()

UnitConverter * Unit::converter ( const Unit srcUnit,
const Unit dstUnit,
bool *  compatible = NULL 
)
static

Função auxiliar usada para criar um conversor entre srcUnit e dstUnit.

Se ambas as unidades recebidas forem válidas, conhecidas, diferentes e conversíveis entre si, retorna um novo conversor alocado pela função e que deve ser deletado pelo chamador da função. Caso contrário retorna NULL.

Se ambas as unidades existirem mas não forem conversíveis entre si, além de retornar NULL, seta compatible (se esta for diferente de NULL) para false. Caso contrário, compatible será setado para true, o que significa que esta função considera que unidades vazias são compatíveis com qualquer outra unidade. Além disso, unidades desconhecidas são compatíveis apenas com elas próprias.

Repare que compatible == true e conversor retornado == NULL indica que não é necessário conversor para transformar um valor de srcUnit em dstUnit.

◆ convertTo()

double Unit::convertTo ( double  val,
const Unit destUnit,
bool *  ok = NULL 
) const

Converte o valor recebido da unidade atual para a unidade de destino.

Parameters
valValor a ser convertido
destUnitUnidade para a qual o valor deve ser convertido
okSe diferente de NULL, recebe booleano indicando se a conversão foi efetuada com sucesso ou não
Returns
Retorna o valor convertido ou o valor original no caso de erro na conversão

◆ getConverter()

UnitConverter Unit::getConverter ( const Unit destUnit) const

Retorna um conversor para tranformar valores da unidade atual para a unidade recebida como parâmetro.

Se as unidades forem incompatíveis ou não existirem parâmetros de conversão cadastrados entre as unidades, retorna um conversor inválido. Utilize a função UnitConverter::isValid() para verificar.

◆ siConv()

QString Unit::siConv ( ) const
inline

Retorna uma string padronizada com o fator de conversão e a unidade SI equivalente a esta unidade, ou o valor de name() se a unidade for desconhecida.

Se duas unidades possuem o mesmo valor de siConv, então estas unidades são iguais, mesmo que seus nomes sejam diferentes (ex: m.s <--> s.m <--> m*s)

◆ udunit()

ut_unit* Unit::udunit ( ) const
inlineprivate

Retorna a representação da unidade para a biblioteca UDUNITS.

Chamadas a esta função devem estar protegidas por isKnown(). Assume que _udunit está preenchido. Valor retornado não deve ser deletado ou armazenado em outro objeto


The documentation for this class was generated from the following files: